GdkWaylandDisplay *display_wayland =
GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
GdkWindow *previous_parent;
+ gboolean was_subsurface = FALSE;
g_assert (parent == NULL ||
gdk_window_get_display (window) == gdk_window_get_display (parent));
unset_transient_for_exported (window);
if (impl->display_server.wl_subsurface)
- unmap_subsurface (window);
+ {
+ was_subsurface = TRUE;
+ unmap_subsurface (window);
+ }
previous_parent = impl->transient_for;
impl->transient_for = parent;
display_wayland->orphan_dialogs =
g_list_remove (display_wayland->orphan_dialogs, window);
}
+
gdk_wayland_window_sync_parent (window, NULL);
- if (should_map_as_subsurface (window) &&
- parent && gdk_window_is_visible (window))
+
+ if (was_subsurface && parent)
gdk_wayland_window_create_subsurface (window);
}